package com.hollysys.usersync.entity.platform;

import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * 用户信息 - 实体类
 *
 * @author Jeremy Yim
 */
@EqualsAndHashCode(callSuper = true)
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class User extends Base {

    /**
     * 用户名
     */
    @Pattern(regexp = "^[A-Za-z0-9_]+$", message = "用户名可使用字母、数字、下划线")
    @Size(min = 5, max = 20, message = "用户名为5~20个字符")
    private String account;

    /**
     * 姓名
     */
    @NotBlank(message = "姓名不能为空")
    @Pattern(
            regexp = "^[\\u4e00-\\u9fa5A-Za-z][\\u4e00-\\u9fa5A-Za-z· ]{0,20}$",
            message = "姓名可使用汉字，字母，空格和点，不能以空格和点开头，最大为20个字符！"
    )
    @JSONField(name = "name")
    private String name;


    /**
     * 邮箱
     */
    private String email;

    /**
     * 主角色ID
     */
    private String mainRole;

    /**
     * 角色ID列表
     */
    private List<String> roles;

    /**
     * 电话号码
     */
    private String mobile;

    /**
     * OA账号
     */
    @JSONField(name = "oaNumber")
    private String oaNumber;

    /**
     * 所属部门Id列表
     */
    private List<String> orgs;

    /**
     * 密码
     */
    private String password;

    /**
     * 保密等级
     */
    private String secretLevel = "0";

    /**
     * 岗位ID(Code)列表
     */
    private List<String> posts;

    /**
     * 所属组织编号
     */
    @NotEmpty(message = "所属组织编号不能为空！")
    private String departmentCode;

    /**
     * 用户类型 1用户 2人员
     */
    private Integer userType;
}
